Stateless web content anti-automation

ABSTRACT

A computer-implemented method for coordinating content transformation includes receiving, at a computer server subsystem and from a web server system, computer code to be served in response to a request from a computing client over the internet; modifying the computer code to obscure operation of the web server system that could be determined from the computer code; generating transformation information that is needed in order to reverse the modifications of the computer code to obscure the operation of the web server system; and serving to the computing client the modified code and the reverse transformation information.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. § 120 as aContinuation of U.S. patent application Ser. No. 15/148,139, filed onMay 6, 2016, which is a Continuation of U.S. patent application Ser. No.143624, filed on Oct. 16, 2013, which claims priority to U.S.Provisional App. No. 61/801,142, filed on Mar. 15, 2013, the entirecontents of which are incorporated herein by reference.

TECHNICAL FIELD

This document generally relates to computer security, and morespecifically to efforts to prevent malware from automatically attackingweb and other content.

BACKGROUND

Computer fraud is big business both for the fraudsters and the peoplewho try to stop them. One common area of computer fraud involvesattempts by organizations to infiltrate computers of ordinary people,and by that action to trick those people into giving up confidentialinformation, such as credit card information and access codes. Forexample, via an exploit commonly termed “Man in the Browser,” a user'scomputer can be provided with code that intercepts legitimatecommunications by the user, such as with the user's bank, and does soafter the communications have been decrypted, e.g., by a web browser onthe computer. Such code may alter the interface that the user sees, suchas by generating an interface that looks to the user like their bank isrequesting particular information (e.g., a PIN number) when in fact thebank would never request such information via a web page. Alternatively,the code may generate an interface that indicates to a user that abanking or shopping transaction was executed as the user requested, whenin fact, the illegal organization altered the transaction so as to sendthe user's money to an entity associated with the organization.

Various approaches have been taken to identify and prevent suchmalicious activity. For example, programs have been developed foroperation on client computers or at the servers of the organizationsthat own and operate the client computer to detect improper activity.

SUMMARY

This document describes systems and techniques by which web code (e.g.,HTML, CSS, and JavaScript) is modified before it is served over theinternet by a server system so as to make more difficult theexploitation of the server system by clients that receive the code(including clients that are infected without their users' knowledge).The modifications may differ for different times that a web page andrelated content are served, whether to the same client computer or todifferent client computers. Specifically, two different users (or asingle user in two different web browsing sessions) may be servedslightly different code in response to the same requests, where thedifference may be in implicit parts of the code that are not displayedso that the differences are not noticeable to the user or users. Forexample, the names that are served to a client device for varioussoftware objects may be changed in essentially random ways each time apage is served. A main purpose of such action is to create a movingtarget with the code, so that malicious code cannot use predictabilityof the code in order to interact with the content in a malicious way. Inone example, changing the code served to client devices in anessentially random manner each time the code is served can determalicious code executing on the client computers (e.g., Man in theBrowser bot) from interacting with the served code in a predictable wayso as to trick a user of the client computer into providing confidentialfinancial information and the like. Moreover, external programsgenerally cannot drive web application functionality directly, and sopreventing predictable interaction with served code can be an effectivemeans of preventing malicious computer activity.

In general, creating a moving, unpredictable target by modifying aspectsof web code each time it is served can prevent or deter a wide varietyof computer attacks. For example, such techniques can be used to combatcredential stuffing, in which malicious parties obtain leaked or crackeduser credentials for a given web service and then use automated bots toperform credential testing at other websites or services based on theillicitly obtained credentials. By changing the content and structure ofthe web code each time it served, bots that seek to either listen foruser credentials or to perform automated credential testing may bethwarted by random changes in the web code that significantly complicatethe bot's task of determining how to effectively interact with the webcode.

Likewise, other forms of computer attacks can also be prevented ordeterred by the web code transformations described in this document.Some of these attacks include: (a) denial of service attacks, andparticularly advanced application denial of service attacks, where amalicious party targets a particular functionality of a website (e.g., awidget or other web application) and floods the server with requests forthat functionality until the server can no longer respond to requestsfrom legitimate users; (b) rating manipulation schemes in whichfraudulent parties use automated scripts to generate a large number ofpositive or negative reviews of some entity such as a marketed productor business in order to artificially skew the average rating for theentity up or down; (c) fake account creation in which malicious partiesuse automated scripts to establish and use fake accounts on one or moreweb services to engage in attacks ranging from content spam, e-mailspam, identity theft, phishing, ratings manipulation, fraudulentreviews, and countless others; (d) fraudulent reservation of rivalgoods, where a malicious party exploits flaws in a merchant's website toengage in a form of online scalping by purchasing all or a substantialamount of the merchant's inventory and quickly turning around to sellthe inventory at a significant markup; (e) ballot stuffing, whereautomated bots are used to register a large number of fraudulent pollresponses; (f) website scraping, where both malicious parties and others(e.g., commercial competitors), use automated programs to obtain andcollect data such as user reviews, articles, or technical informationpublished by a website, and where the scraped data is used forcommercial purposes that may threaten to undercut the origin website'sinvestment in the scraped content; and (g) web vulnerability assessmentsin which malicious parties scan any number of websites for securityvulnerabilities by analyzing the web code and structure of each site.

The systems, methods, and techniques for web code modificationsdescribed in this paper can prevent or deter each of these types ofattacks. For example, by randomizing the implicit references in web codethat may be used for making requests to a web server or by randomlyinjecting distractor fields into the code that were not originally partof the code provided by the web server, the effectiveness of bots andother malicious automated scripts is substantially diminished.

As such, malicious activity can be both deflected and detected inrelatively sophisticated manners by changing the environment in whichexecutable code on the client device, such as JavaScript, operates (inaddition to changing corresponding references in the HTML code).Deflection occurs by the constant changing of code elements as they areserved each time, such as changing the names of elements that will becalled by malicious JavaScript, so that the malicious code can nevercatch up with the changes, and thus gives itself away when it tries tointeroperate with code known by the system to be stale. Detection canoccur by identifying certain JavaScript operations or calls that may bemade on a page, and instrumenting code that is served with a web page soas to report to a security server system when such operations occurand/or such calls are made (along with information that describes theactions). Specifically, malicious code may try to call an item that itbelieves to be part of a static page, where that item is not part of thedynamically altered code that was actually served, and such a false callcan be detected and reported.

As one example, a common method for making changes to a document objectmodel (DOM) for a web page is the document.write method, and may be usedby malicious code to surreptitiously change what the user of a computingdevice sees on a web page. A security system can (1) instrument servedcode corresponding to such a method so that the instrumentation codereports calls to the method, and additional includes data thatcharacterizes such calls, so that the system can detect abnormalactivity and perhaps use the additional data to determine whether theabnormal activity is malicious or benign; and (2) change the functionname to “document.#3@1*87%5.write,” “1@2234$56%.4$4$345%4.@12111@”, orsome other legal name that includes random text that can be changedautomatically each time the code is served. Such constant changingcreates a real challenge for a malicious party seeking to write codethat can keep up with the changes, and also flags the presence of themalicious code when it attempts to interact with an outdated methodname, and is reported by the instrumentation code. Other examples ofJavaScript actions that can be instrumeand continually changed include“getElementById,” “getElementByName,” XPath commands, and setting ofHTML elements in the DOM to particular values.

The modification of code that is described in more detail below may becarried out by a security system that may supplement a web serversystem, and may intercept requests from client computers to the webserver system and intercept responses from web servers of the systemwhen they serve content back to the client computers (including wherepieces of the content are served by different server systems). Themodification may be of static code (e.g., HTML) and of relatedexecutable code (e.g., JavaScript) in combination. For example, thenames of certain elements on a web page defined via HTML may be changed,as may references to items external to the HTML (e.g., CSS andJavaScript code). For example, the name of a label may be changed from aname provided by a programmer to an essentially random name like$4@376&8*. Such renaming may occur by first identifying programmaticallyrelated elements across the different types of code that are to beserved to the client computer (e.g., HTML, CSS, and JavaScript) andgrouping such occurrences of elements for further processing (e.g., bygenerating flags that point to each such element or copying a portion ofeach such element). Such processing may occur by modifying each elementthroughout the different formats of code, such as changing a name in themanner above each time that name occurs in a parameter, method call, DOMoperation, or elsewhere. The modified elements may then be placed intothe code to be delivered to the client computer, by recoding the codethat was sent from the web server system, and serving the recoded code.Such a process may be repeated each time a client computer requestscode, and the modifications may be different for each serving of thesame code.

Such modification of the served code can help to prevent bots or othermalicious code operating on client computers from exploiting perceivedweaknesses in the web server system. For example, the names of functionsor variables may be changed in various random manners each time a serversystem serves the code. As noted above, such constantly changingmodifications may interfere with the ability of malicious parties toidentify how the server system operates and web pages are structured, sothat the malicious party cannot generate code to automatically exploitthat structure in dishonest manners. In referring to randommodification, this document refers to changes between different sessionsor page loads that prevent someone at an end terminal or controlling anend terminal to identify a pattern in the server-generated activity. Forexample, a reversible function may change the names when serving thecode, and may interpret any HTTP requests received back from a client bychanging the names in an opposite direction (so that the responses canbe interpreted properly by the web servers even though the responses aresubmitted by the clients with labels that are different than those thatthe web servers originally used in the code). Such techniques may createa moving target that can prevent malicious organizations fromreverse-engineering the operation of a web site so as to build automatedbots that can interact with the web site, and potentially carry outMan-in-the-Browser and other Man-in-the-Middle operations and attacks.

The ability to modify code that is served and to, in effect, reversemodify requests that are received back from a client device, can be madeeasier and more flexible by implementing the security server system as astateless system, i.e., one that does not have to keep track of sessionswith various client device in between communications with those devices.One such way to implement a statement system is to have the clientdevice keep track of state-related information during such interstitialperiods. As described in more detail below, for example, aninitialization vector and cipertext that represents a code used totransform the outgoing content may be provided as a session cookie tothe client device when the content is provided. The client device maythen submit that cookie information when it makes a subsequent request.That request may include transformed information that the web serversystem would not understand, so the security system needs to perform areverse transformation on it. The system may thus use the vector andciphertext (along with its own private key) without having to store andkeep track of it in order to perform the reverse transformation beforegiving the request to the web server system.

As for identifying (rather than preventing) malicious activity, the codethat is served to requesting clients, in addition to or as analternative to being randomly modified so as to prevent automatedmalicious interactions at network endpoints, may be supplemented withinstrumentation code that is programmed to identify alien content in therendered web page on the client. That instrumentation code that runs onthe client may, for example, be programmed to identify a function callfor a function name that does not match function calls that arepermissible for a particular served web page (e.g., where the alien callmay be one that matches a name from the page originally provided by aweb server but does not match the revised name generated by the codealteration techniques discussed in the prior paragraph). Such aliencontent may simply be an indication that the user has installed alegitimate plug-in to his or her browser, or it may also be anindication that the user's computer has become infected with maliciouscode (e.g., JavaScript code). Additional techniques may be used oncealien content is identified so as to determine whether the content ismalicious or benign.

The techniques discussed here may be carried out by a server subsystemthat acts as an adjunct to a web server system that is commonly employedby a provider of web content. For example, as discussed in more detailbelow, an internet retailer may have an existing system by which itpresents a web storefront at a web site (e.g., www.examplestore.com),interacts with customers to show them information about items availablefor purchase through the storefront, and processes order and paymentinformation through that same storefront. The techniques discussed heremay be carried out by the retailer adding a separate server subsystem(either physical or virtualized) that stands between the prior systemand the internet. The new subsystem may act to receive web code from theweb servers (or from a traffic management system that receives the codefrom the web servers), may translate that code in random manners beforeserving it to clients, may receive responses from clients and translatethem in the opposite direction, and then provide that information to theweb servers using the original names and other data. In addition, such asystem may provide the retailer or a third party with whom the retailercontracts (e.g., a web security company that monitors data from manydifferent clients and helps them identify suspect or malicious activity)with information that identifies suspicious transactions. For example,the security subsystem may keep a log of abnormal interactions, mayrefer particular interactions to a human administrator for lateranalysis or for real-time intervention, may cause a financial system toact as if a transaction occurred (so as to fool code operating on aclient computer) but to stop such a transaction, or any number of othertechniques that may be used to deal with attempted fraudulenttransactions.

In certain implementations, the operation of a stateless security serversystem may provide one or more advantages. For example, certainimplementations may eliminate a need to store and manage initializationvectors and other information needed to reverse-transform requests,which may be particularly relevant where many sessions are occurring atone time, and many of them never have a return request, such that thecredentials would need to be saved for a time and constantly cleaned upby a system if a stateless approach were not used. Also, a statelessapproach like those discussed here may eliminate the need to selectivelydirect return traffic to a particular security server sub-system. Inparticular, because the data needed for reverse transformations comeswith the request, the request can be handled by any system that isexecuting the same transformation function as the original sub-system(as long as they all have access to the private key where such is neededin a particular implementation). Moreover, such an approach may permitfor automatic correlation of state with externally linked CSS andJavaScript files.

In one implementation, a computer-implemented method is disclosed forcoordinating content transformation. The method comprises receiving, ata computer server subsystem and from a web server system, computer codeto be served in response to a request from a computing client over theinternet; modifying the computer code to obscure operation of the webserver system that could be determined from the computer code;generating transformation information that is needed in order to reversethe modifications of the computer code to obscure the operation of theweb server system; and serving to the computing client the modified codeand the reverse transformation information. At least some of the reversetransformation information can be encrypted so that code on the clientcomputer cannot access the reverse transformation information. Also, thereverse transformation information can comprise a nonce and ciphertext.The method may also comprise receiving a subsequent request and thetransformation information from the computing client, and using thetransformation information to apply a reverse transformation to aportion of the request. Moreover, the method can include applying aprivate key held by the computer server system to the transformationinformation.

In another implementation, a computer system for coordinating contenttransformation is disclosed. The system can include a web server that isconfigured to provide a resource in the form of computer code to clientcomputing devices in response to requests from the client computingdevices; and a security intermediary that is configured to (i) receivethe resource from the web server before the resource is provided to thefirst client computing device, (ii) process the received resource, and(iii) transmit the processed resource and reverse transformationinformation to the first client computing device, wherein the reversetransformation information comprises information that is needed in orderto reverse the modifications of the computer code to obscure theoperation of the web server system. The system can include a computerinterface configured to receive resources from a web server that hasbeen served in the form of computer code to client computing devices inresponse to requests from the client computing devices.

Other features and advantages will be apparent from the description anddrawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A depicts a schematic diagram of an example system for serving webcode and monitoring actions of client computers.

FIG. 1B depicts a system-flow diagram of the example system and exampleoperations of the system for serving web code and monitoring actions ofclient computers.

FIG. 2 is a schematic diagram of a system for performing deflection anddetection of malicious activity with respect to a web server system.

FIG. 3 is a flow chart of a process for managing a state indicator.

FIG. 4 shows schematically an encryption process.

FIG. 5 is a schematic diagram of a computer system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIG. 1A is a schematic diagram of a system 100 for serving web code andmonitoring actions of client computers to identify abnormal behavior andpotentially malicious activity. Web code may include, for example, HTML,CSS, JavaScript, and other program code associated with the content ortransmission of web resources such as a web page that may be presentedat a client computing device 114. The system 100 can detect and obstructattempts by fraudsters and computer hackers to learn the structure of awebsite and exploit security vulnerabilities in the client device 114.For example, malware 118 may infect a client device 114 and gathersensitive information about a user of the device, discreetly modify anonline transaction, or deceive a user into engaging in compromisingactivity such as divulging confidential information. Man-in-the-middleexploits are performed by one type of malware 118 that is difficult todetect on a client device 114, but can use security vulnerabilities atthe client to engage in such malicious activity.

The system 100 can serve modified and instrumented web code to theclient device 114 to detect and obstruct malware 118 attempts to discernand exploit operations of a web server 104. In this example, themodified web code 114A is represented as a portion of a document on theclient device 114, while the instrumentation code 114B is represented asanother portion of the client device 114. Such simplified representationis provided for sake of explanation, though actual delivery andexecution of the code may take a variety of forms, including by a webbrowser on the client device 114 rendering a page and potentiallyaccessing additional code (e.g., JavaScript or code from other domains)based on code that is part of the web page, and the browser may build adocument object model in a familiar manner by such rendering andexecution of the provided code.

The system 100 can include a security intermediary 102 that is logicallylocated between the web server 104 and one or more client devices 114.The security intermediary 102 can receive a portion or all of thetraffic, including web code, transmitted between client devices 114 andthe web server 104 (and vice-versa). In compliance with a governingsecurity policy, when the web server 104 provides a resource such as aweb page in response to a client device 114 request, the web server 104can forward the response to the security intermediary 102 (perhapsthrough a load balancer or other data management devices orapplications) so that the web code for the response can be modified andalso supplemented with instrumentation code 114B. Modification of theweb code may be random in certain manners, and can differ each time aresponse is served to a client to prevent malware 118 from learning thestructure or operation of the web server 104, or from being developed bya malicious organization that learns the structure or operation.Additionally, the web code can be supplemented with instrumentation codethat is executable on the client device 114. The instrumentation code114B may detect when abnormal behavior occurs on the client device 114,such as possible unauthorized activity by the malware 118, and canreport the occurrence of such activity to the security intermediary 102.

When security intermediary 102 receives requests (e.g., HTTP requests)from clients in response to modified web code being processed on thoseclients, it can apply reverse modifications to the requests beforeforwarding the requests to the web server 104. Additionally, thesecurity intermediary 102 can receive reports from the instrumentationcode that indicate abnormal behavior on the client device 114, and theintermediary can log these events, alert the web server 104 to possiblemalicious activity, and send reports about such events to a centralsecurity server (not shown). The central security server may, in someimplementations, analyze reports in the aggregate from multiple securityintermediaries 102, and/or reports from multiple client devices 114 andmultiple computing sessions and page loads.

The security intermediary 102 can additionally create a code thatdefines the transformation that was performed on the web code. Forexample, a particular function may be applied to strings in the code togenerate random text, and that function can be seeded with a code thataffects the result of the function—e.g., where application of the sameseed and the same text will always produce the same “random” output, buta different seed is used for each request or session so that the servedtext is seen as random. The served text may also be accompanied withinformation that may be stored as a cookie 115 on the client device 114.When the client device makes subsequent requests to the web server 104,code on the client device may cause the cookie information to be passedwith the request. Such cookie information may include, for example, aninitialization vector (as a large random number) for the transformationfunction and cipertext (e.g., in Base64). The cookie may be treated bythe system 100 as a session cookie in this example.

One format for such a cookie may be as follows:

Set-Cookie: Nonce=wkj04328jsajsdfioj3f

Set-Cookie:

Ciphertext=QmFzZTY0IGVuY29kaW5nIHNjaGVtZXMgYXJIIGNvbW1vbmx5IHVz

ZWQgd2hIbiB0aGVy

ZSBpcyBhIG5IZWQgdG8gZW5jb2RIIGJpbmFyeSBkYXRhIHRoYXQgbmVIZHMg

YmUgc3RvcmVkIGFuZCB0cmFuc2ZIcnJIZCBvdmVyIG1IZGIhIHRoYXQgYXJIIG

RIc2InbmVkIHRvIGRIYWwgd2I0aCB0ZXh0dWFsIGRhdGEuIFRoaXMgaXMgdG

FIG. 1B is a schematic diagram of the system 100 depicted in FIG. 1A,including a process for serving code and monitoring actions of clientcomputers to identify anomalous and potentially malicious activity. Thesystem 100 may include a web server 104, security intermediary 102,security server 108, and one or more client devices 112 and 114. Clientdevice 114 has been infected with malware 118 that may attempt toexploit security vulnerabilities at the client device 114 and/or the webserver 104, while client device 112 is “clean” or uninfected in thisexample. For example, the malware 118 may have been written by anorganized crime syndicate to identify transactions with a particularbank whose web site structure the syndicate has studied, and may attemptto induce users to provide private information such as PIN codes byrecognizing when the bank's web page is loaded by a browser, andinterfering with the normal user interface of the bank's web page, suchas by generating a pop-up seeking the user's PIN number, in a mannerthat it looks to the user like the bank generated the pop-up. In anactual implementation, the system 100 would communicate with thousands,tens of thousands, hundreds of thousands, or millions of clientdevices—some compromised and some clean—over a long time period, thoughthe number here is reduced for the sake of simplification.

The web server 104 (which in normal implementation would be implementedin a large number of physical or virtual servers across one or more datacenters, such as in one or more racks of servers) may host electronicresources and provide services over one or more networks such as theinternet 110. For example, the web server 104 may serve code for pagesof one or more websites by storing resources for each website such asHTML pages, scripts, images, media, and user data at the server 104, andproviding the resources upon request. For instance, the web server 104may receive an HTTP request from a client device 112 that requests theserver 104 to provide the client device 112 with a code for generating awebpage. In response, the server 104 retrieves one or more resourcesassociated with the request and transmits them to the requesting clientdevice 112. The server 104 may respond to an HTTP request by serving anHTML file that represents a webpage. The HTML file may reference otherresources such as advertisements, images, JavaScript code, or CascadingStyle Sheets (“CSS”) that the client device 112 can use to load andpresent the webpage to a user. The web server 104 may provide thereferenced files to satisfy the initial request, or may provide thefiles in response to subsequent requests from the client device 112.

The web server 104 can be implemented with various combinations ofsoftware and hardware. In some implementations, the web server 104 cansupport services other than or in addition to HTTP, including FTP, SSH,TelNet, and/or IMAP, POP, and SMTP for e-mail services. The web server104 may also support secure connections such as through SSL and HTTPsprotocols. Various open-source or commercial software products may beused in implementing the web server 104, such as APACHE web serversoftware or Windows Home Server software. Also, the web server 104 canbe comprised of one or more computing devices, such as a distributedserver system with multiple connected devices that each provide portionsof the operations (e.g., as a server bank, a group of blade servers, ora multi-processor system).

The client computing devices 112 and 114 are capable of communicatinginformation with the web server 104 over a network such as the internet110. The client devices 112, 114 can include any of a variety of desktopor mobile devices such as a desktop computer, notebook, smartphone, ortablet. The client computing devices may include a network interfacecard or other hardware for communicating over a wired or wirelessnetwork that is connected to the internet 110. The client devices 112,114 may also include software, such as a web browser or one or morenative applications, to allow a user of the client devices 112, 114 torequest, load, and interact with web resources such as HTML pages andJavaScript applications from one or more websites served by the webserver 104.

Malware 118 may be present on one or more client devices thatcommunicate with the web server 104. In FIGS. 1A and 1B, malware 118 hasinfected the client device 114, but not client device 112. Malware 118can include any software that exploits operations of a client or remotecomputing system such as the web server 104. Malware 118 may engage invarious malicious behaviors, including attempts to gather private,digitally-stored information about users such as identification orfinancial information. Attackers can also use malware 118 to accesssecure computer systems without authorization, destroy digitalinformation, or gain control of a computer system from an authorizeduser. Malware 118 may include viruses, Trojan horses, spyware, adware,and other malicious software. Attackers have developed sophisticatedmethods to deploy malware 118 on client computing devices 118 without auser's knowledge. For example, using phishing and other socialengineering techniques, attackers may deceive users into accessing aresource that installs malware 118 on the user's computing systemwithout notice or detection.

Some malware 118 can exploit security vulnerabilities in the clientdevice 114 (including in a browser or browsers executing on the clientdevice 114) to obtain sensitive user account information and to initiatefraudulent transactions. Attackers may use man-in-the-middle attacks,for instance, to intercept communications between the client device 114and the web server 104. Even where a secure communication protocol isused between the client device 114 and the web server 104, some malware118 can intercept communications (e.g., after they have been decoded onthe client device 114), log information about the communications, andeven alter such communications. In man-in-the-browser attacks, themalware 118 may compromise a web browser at client device 114 such thatthe malware 118 activates when a user visits a particular website. Themalware 118 may access information about the website even after code forthe site is decrypted, and in some instances, the malware 118 may injectextra code such as HTML or JavaScript to create malicious forms thatprompt users to divulge confidential information that can later betransmitted to attackers for further use. Man-in-the-browser malware 118may also alter an HTTP request from the client device 114 without theuser's knowledge to divert a request to an unauthorized server or toimplement a fraudulent transaction. For example, in a bankingtransaction, malware 118 in the client computing device 114 may alterthe destination account number in a wire transfer to deliver funds to amule account rather than an account specified by the user. Some malware118 may passively reside in the client device 114 to monitor features ofa site so that manual or automated attacks on the site's web server 104can be made at a later time.

Security intermediary 102 may include one or more computing devices(e.g., physical or virtual server instances) that are situated betweenthe client computing devices 112, 114 and the web server 104. Thesecurity intermediary 102 receives and processes at least a portion oftraffic transmitted between the web server 104 and other computingdevices that interact with the web server 104, such as the clientdevices 112, 114. In some implementations, the security intermediary 102may be a physical or virtual subsystem of the web server 104. Thesecurity intermediary 102 may be configured to modify and/or analyze webcode transmitted to and from the web server 104 to detect alien (i.e.,abnormal) or malicious transactions and to obscure operations of the webserver 104 by various forms of malware.

The security intermediary 102 is forwarded or intercepts traffictransmitted from the web server 104 before the traffic is received by arequesting computer device such as client devices 112 or 114. Forexample, the security intermediary 102 may receive content from the webserver 104 through a direct connection with the web server 104 orthrough a local area network (“LAN”) before transmitting the contentover the internet 110. Conversely, the security intermediary 102 mayalso receive incoming traffic that is destined for the web server 104 sothat it can process the traffic before it is received by the web server104. In some implementations, the security intermediary 102 may beconfigured as a reverse proxy server that appears to clients to host andserve a website or other electronic resources as if it were the webserver 104. In certain implementations, different subserver systems canbe used for outgoing service of code and incoming processing ofrequests, with the subsystems communicating so that one system canprovide reverse translations to the translations originally provided bythe first subsystem. Such coordination may occur, whether a singlesecurity subsystem is used or multiple subsystems are used, such as bystoring a cookie or similar identifier on client devices 112, 114, wherethe identifier can be used as a public key for performing thetransformations (where server-side security for private resources can bereliably maintained).

The security intermediary 102 may include one or more computing devicesthat are separate from computing devices of the web server 104. In suchimplementations, the security intermediary 102 may communicate directlywith the web server through a networking cable such as an Ethernet cableor fiber optic line (and typically through many such connections). Theintermediary 102 can also communicate with the web server 104 through anetwork such as a local area network (“LAN”). In some instances, theintermediary 102 can be installed on the same premises as the web server104 so that operators or administrators of the web server 104 can alsomaintain the intermediary 102 locally (particularly for large-volumeapplications). Installing the intermediary 102 in close proximity to theweb server 104 can have one or more additional benefits includingreduced transmission latency between the intermediary 102 and the webserver 104 and increased security that stems from a private connectionbetween the intermediary 102 and the web server 104 that is isolatedfrom public networks such as the internet 110. This configuration canalso avoid any need to encrypt communication between the intermediary102 and the web server 104, which can be computationally expensive andslow.

In some implementations, the security intermediary 102 may include oneor more computing devices that are separate from the computing devicesof the web server 104, and that are connected to the web server 104through a public network such as the internet 110. For example, athird-party security company may maintain one or more securityintermediaries 102 on the security company's premises. The securitycompany may offer services to protect websites and/or web servers 104from exploitation according to the techniques described herein. Thesecurity intermediary 102 could then act as a reverse proxy for the webserver 104, receiving outbound traffic from the web server 104 over theinternet 110, processing the traffic, and forwarding the processedtraffic to one or more requesting client devices 112, 114. Likewise, theintermediary 102 may receive incoming traffic from client devices 112,114 over the internet 110, process the incoming traffic, and forward theprocessed traffic to the web server 104 over the internet 110. In thisconfiguration, communication between the security intermediary 102 andthe web server 104 may be encrypted and secured using protocols such asHTTPS to authenticate the communication and protect against interceptionor unauthorized listeners over the internet 110. In some embodiments, aprivate line or network may connect the web server 104 to the remotesecurity intermediary 102, in which case the system 100 may useunencrypted protocols to communicate between the intermediary 102 andweb server 104.

In some implementations, security intermediary 102 may be a virtualsubsystem of web server 104. For example, the one or more computingdevices that implement web server 104 may also include software and/orfirmware for the security intermediary 102. The system 100 may includethe security intermediary 102 as software that interfaces with, and/oris integrated with, software for the web server 104. For example, whenthe web server 104 receives a request over the internet 110, thesoftware for the security intermediary 102 can first process the requestand then submit the processed request to the web server 104 through anAPI for the web server 104 software. Similarly, when the web server 104responds to a request, the response can be submitted to the securityintermediary 102 software through an API for processing by securityintermediary 102 before the response is transmitted over the internet110.

In some configurations of the system 100, two or more securityintermediaries 102 may serve the web server 104. Redundant securityintermediaries 102 can be used to reduce the load on any individualintermediary 102 and to protect against failures in one or more securityintermediaries. The system 100 can also balance traffic among two ormore security intermediaries 102. For example, the system 100 maycategorize traffic into shards that represent a logical portion oftraffic to or from a website. Shards may be categorized according toclient identity, network information, URL, the domain or host name in anHTTP request, identity of resources requested from the web server 104,location of resources requested from the web server 104, and/or thecontent of a request or the requested resource 104.

The security intermediary 102 can process traffic transmitted to andfrom the web server 104. Processing traffic may include analyzing webcode to identify alien or malicious activity, reversibly modifying webcode to obscure elements of resources provided by the web server 104,and/or inserting instrumentation code into web code provided by the webserver 104 to facilitate detection of alien or malicious activity at theclient computing device 112, 114. The security intermediary 102 can alsoapply reverse modifications on requests or other information transmittedby client devices 112, 114. Reverse modifying of requests caneffectively make the security intermediary's 102 operations transparentto the web server 104. This document sometimes refers to reversemodifications as inverse modifications and these terms are intended tohave the same meanings unless indicated otherwise.

The security intermediary 102 can make various modifications to outgoingweb code. In one example, the security intermediary 102 can make randomor pseudo-random changes (both of which are covered by the term “random”in this document unless indicated otherwise) in HTML attribute values inlinks or forms, which the client 112, 114 may translate directly intoHTTP protocol elements in subsequent requests to the web server 104. Forinstance, a web server 104 for an online retailer atwww.examplestore.com can provide a text field in a checkout page for auser at the client device 112, 114 to input his or her shipping address.The original HTML web code from the web server 104 may include an HTMLtag to create the field: <input type=“text” name=shippingaddress>. Toobstruct attempts by malware 118 that may have compromised the clientdevice 114 to exploit the field and engage in a fraudulent transaction,the security intermediary 102 can replace one or more attributes for thefield, such as by generating a pseudo-random value for the ‘name’attribute to replace ‘shippingaddress.’ The security intermediary 102may then forward the modified HTML for the webpage to the client device114. The client device 114 may then generate HTTP requests for the webserver 104 that include the modified attribute, such as in a POSTrequest that references the pseudo-random ‘name’ attribute value. Whenthe security intermediary 102 receives the client device 114 POSTrequest, it applies a reverse modification to the attribute value,replacing the pseudo-random value with the original ‘shippingaddress’value, and then forwards the request to web server 104. The securityintermediary 102 may store or access translation tables to apply thereverse modifications, or use encrypted content in informationassociated with the request to apply reverse modifications. Furtherexplanation and examples of security intermediary 102 operations,including techniques for detection and deflection of unauthorizedactivity, are discussed in further detail with respect to FIGS. 2-4.

The security intermediary 102 can apply different modifications to webcode each time the code is served to one or more client devices 112,114. Applying different or unique modifications before the code isultimately delivered to the client 112, 114 can frustrate attempts bymalware 118 in the client to study and/or exploit the structure of awebsite or other web application. Each time the web server 104 providesa particular resource, such as a web page, the security intermediary 102can apply different and unique modifications to the page. Modificationsmay vary across different users, different clients 112, 114, differentsessions, and even different page loads for the same user. For example,a user at client device 112 may receive a particular page with one setof modifications during a first session, and different, second set ofmodifications during a different session. Similarly, for two differentusers at client devices 112 and 114, respectively, that request the sameresource from web server 104, the security intermediary 102 may applydifferent modifications to each resource, even if the users made theirrequests at substantially the same time. By modifying contentdifferently each time it is served, the security intermediary 102creates a moving target that obstructs attempts by malware 118 todetermine a “normal” structure of the site or to identify patterns inthe structure of a site. Performing such random modifications makes itmore difficult for malware 118 to successfully initiate a fraudulenttransaction with the web server 104 or otherwise engage in unauthorizedactivity.

The modification may be applied according to an initialization vector inthe form of a large random number that is generated for each usersession with a particular web site. Where the security intermediary 102is implemented as a stateless embodiment, the security intermediary maysend the modified content along with information for a cookie, where theinformation allows for the reverse modification of any requests from theclient device (e.g., where the requests might include text that has beenmodified and thus would not be recognizable to the web server). Uponreceiving such a follow-up request, the security intermediary may parsethe transformation information from the request (e.g., to obtain a nonceand ciphertext) and may uses that information to unmodify any modifiedtext in the request.

The system 100 may include a load balancer 106, which can function as areverse proxy and distribute incoming traffic from client devices 112,114 among one or more web servers 104 and/or one or more securityintermediaries 102. The load balancer 106 can be connected to a networksuch as the internet 110, one or more web servers 104, and one or moresecurity intermediaries 102. The load balancer 106 analyzes incomingtraffic (e.g., traffic destined for the web server 104) and maycategorize the traffic into shards. Traffic may be distributed, forexample, based on a Layer 4 transport or network layer analysis, orbased on a Layer 7 application layer analysis. For example, FTP requestsmay be channeled to a web server 104 configured to process FTP requests,whereas HTTP requests may be channeled to a web server 104 configured toprocess HTTP requests. Similarly, in Layer 7 analysis, the load balancer106 may distribute incoming traffic based on the content of an HTTPheader or content of the application message itself. For instance, at anonline banking website for www.examplebank.com, certain pages on thesite may be unrelated to a customer's online banking experience, such asprivacy and terms of use pages for the site. At these pages, thecustomer does not interact with his bank account, and the customer canonly consume or request information from the page, but he cannot postinformation to the web server 104 from that page. These pages may bedeemed a low security risk and the load balancer 106 can be configuredto identify low risk pages from HTTP requests in incoming traffic. Theload balancer 106 may forward low risk traffic directly to the webserver 104 and bypass the security intermediary 102.

The load balancer 106 can also distribute traffic among multiplesecurity intermediaries 102. In one example, incoming traffic can bedistributed so that each security intermediary 102 maintains asubstantially equal load as the other intermediaries 102 or receives asubstantially equal amount of traffic as the other intermediaries 102.In some instances, incoming traffic may be responsive to previouslytransmitted web code that had been processed and modified by aparticular security intermediary 102. The load balancer 106 maydistribute such incoming traffic to the particular security intermediary102 that generated the previously modified code so that the particularsecurity intermediary 102 can apply a reverse modification to web codein the incoming traffic based on a transformation table that may bestored locally on the particular security intermediary 102. In someimplementations, however, transformation tables may be shared oraccessible by one or more other security intermediaries 102, ormodifications may be stateless, so that web code from incoming trafficcan be distributed to any intermediary 102.

Once incoming traffic has been distributed to and processed by asecurity intermediary 102, the load balancer 106 may receive theprocessed traffic from the security intermediary 102 and forward thetraffic to the web server 104.

The load balancer 106 can also distribute outgoing traffic from the webserver 104 for processing by a security intermediary 102 beforetransmitting the traffic to the client device 112, 114. Similar toanalyzing incoming traffic, the load balancer 106 may categorizeoutgoing traffic into shards based on information in the network,transport, or application layers of the traffic. The load balancer 106may determine that some traffic shards may bypass the securityintermediary 102 and may transported over the internet 110 fortransmission to a client device 112, 114. Other shards may bedistributed to one or more security intermediaries 102 for processing.In implementations of the system 100 that include multiple securityintermediaries 102, the load balancer 106 may distribute outgoingtraffic to maintain generally equivalent loads among the multipleintermediaries 102. The security intermediaries 102 can then transmitprocessed traffic back to the load balancer 106 for delivery to clientdevices 112, 114 over the internet 110.

A configuration module 120 can be used to monitor the system 100 and toconfigure various aspects of the system's 100 operation. Anadministrator can use the configuration module 120 to provide systemupdates, change and load one or more system policies, manage users,select an operation mode, define how to handle exceptions, and/ormonitor the health and status of the system 100.

In one implementation, an administrator may use the configuration module120 to update system software to improve the performance and security ofthe system. As the system 100 is deployed for periods of time in thefield, malware 118 designers may attempt to learn about the system 100and exploit any detected security vulnerabilities. To prevent this, thesystem 100, including, for example, the security intermediary 102, canbe updated with new software that patches security vulnerabilities andimproves system performance. New features may also be introduced such asnew algorithms for modifying web code or implementing instrumentationcode.

The administrator can also use the configuration module 120 to select orchange different system policies. For example, particular modificationmodes may be selected. The administrator can choose whether the securityintermediaries 102 should apply modification techniques that involveonly modifying a web application's implicit API (e.g., form fields,links, AJAX calls), for example, or if instrumentation code or othercontent should be supplemented with the web code. The administrator canalso configure how sessions are managed. For example, the securityintermediary 102 can be configured to apply a unique session ID eachtime a client device 112, 114 makes a new request for a web application,or a particular session can be made to last across multiple requests,such as when a user browses multiple pages while logged into a secureaccount.

The configuration module 120 can also facilitate management of resourcefamilies, which are categories of requests and electronic content forwhich a particular security policy applies. Thus, the system 100 mayallow one or more resource families to bypass operations of the securityintermediary 102, while resources in other families must pass throughthe security intermediary 102 for modification or analysis before beingdelivered to a client device 112, 114. In some instances, resourcefamilies can be defined by directories, uniform resource indicators(URIs), uniform resource locators (URLs), subdomains, or other logicallocations of particular resources on a site that is served by the webserver 104. If a web serve 104 serves multiple sites or multipledomains, different policies may apply among the different sites and/ordomains. An administrator can create, modify and remove resourcepolicies at the configuration module 120, and can indicate whichsecurity policy or policies to apply to various families.

An administrator 120 can also configure how the system 100 should applyvarious security policies based on factors other than or in addition toresource families. For instance, different policies may apply based oncharacteristics of the device that is making the request or the networkon which the requesting device is on. The security intermediary 102 maydetermine identities of client devices 112, 114 for which a securitythreat has previously been identified, or it may recognize an account ofa user that has previously been associated with security threats. Theadministrator may configure the system 100 to apply more restrictivesecurity policies to particular requesting client devices 112, 114 orusers than would otherwise apply based on the family of the requestedresource alone.

At the direction of an administrator or other user with appropriatesystem privileges, the configuration module 120 can change operatingmodes in the security intermediary 102 and/or adjust the security policyof one or more resource families, clients, or networks. The securityintermediary 102 may be capable of various modification modes that theadministrator can apply to a resource family, for example. In somemodes, very subtle modifications may be made to elements of the web codein order to detect anomalous or malicious activity, whereas other modesmay apply increasingly more complex or widespread modifications that areaimed at preventing unauthorized activity. In some implementations,policy settings or mode changes can be triggered automatically by theconfiguration module 120.

The configuration module 120 can also allow an administrator to specifyhow the security intermediary 102 should respond to exceptions.Exceptions can relate to internal system errors or to detection offraud, malware, abnormal behavior, and/or malicious activity in trafficreceived from a client device 112, 114. Internal system errors may belogged and transmitted to security server 108 for further analysis orstorage. For instances of detected fraud, malware, or alien or maliciousweb code, the security intermediary 102 can be configured to respond inone or more ways. The intermediary 102 may log the event and transmit itto security server 108 for further analysis. In some implementations,the security intermediary 102 may alert the web server 104 of suspectedunauthorized activity, so that the web server 104 can respond in aparticular way. For example, in a banking transaction involvingsuspected fraud, the system 100 can be configured to process thetransaction normally, log the transaction, and alert various parties orauthorities. Alternatively, the transaction can be thwarted if thesecurity intermediary 102 is configured to alert the web server 104. Theweb server 104 can respond to a fraud alert by generating a web resourcefor delivery to an infected or fraudulent client device 114 thatindicates the transaction was processed as requested, when in fact itwas not.

The administrator may also manage users at the configuration module. Forexample, various user categories may provide system users with varyinglevels of use and access privileges to the system 100. In oneimplementation, the system 100 may provide four user categories:super-users, system operators, analysts, and auditors. Super-users cancreate other users and are able to access and perform any actionprovided for by the system 100. The administrator may be a super-user,for instance. System operators can configure the system 100 and viewdata from the system 100, but cannot manage other users. Analysts canview data from the system 100, but they cannot modify the system'sconfiguration. Finally, an auditor can view a limited set of system datasuch as how the system was used and by whom.

The configuration module 120 can also provide a portal for various othersystem settings such as those that may be required for installation andsetup of the security intermediary 102, or to configure a particularsystem setup, such as registration with a security server 108,interoperability with the load balancer 106, and arrangements ofmultiple security intermediaries 102. The configuration module 120 canbe accessible at a terminal on the premises of the security intermediary102 and can be separate from or integrated with the securityintermediary 102. In some implementations, the configuration module 120can be accessible remotely, such as through an interface at a desktop ormobile computing device that can communicate with the securityintermediary 102 through a network.

The security server 108 can receive and analyze security eventinformation from the security intermediary 102. Security eventinformation can include logs and alerts generated by the securityintermediary 102 that indicate when the intermediary 102 detectsanomalous or malicious activity. Feedback from instrumentation code thatthe security intermediary 102 supplements with the web code forparticular web resources may indicate such anomalous or maliciousactivity. Likewise, a request from an infected client device 114 thatcalls an unauthorized function that does not match modifications for agiven session may generate an alert by the security intermediary 102.

Information about security events can be forwarded to the securityserver 108. In one example, the security server 108 can be dedicated toevents received from one or more security intermediaries 102 that servea particular web server 104. In some implementations, the securityserver 108 can be a centralized server that receives security eventinformation from a plurality of security intermediaries 102 that servemultiple web servers 104 and/or websites. Information on security events108 from multiple sites can be analyzed in aggregate to study developingsecurity threats, determine whether some anomalous activity maynevertheless be benign (such as traces from an authorized or legitimatebrowser plug-in), to publish statistics or report information onsecurity events to interested parties, and/or to use in developingupdates and improvements to the system 100 for increased performance andsecurity. The security server 108 can analyze information from acrossmultiple computing sessions and/or multiple clients as well.

The security server 108 can also receive operating information from thesecurity intermediary 102 that can be used to monitor systemperformance. For instance, the security intermediary 102 may track andreport information about the speed and volume of modifications that itmakes to web code, or information about its usual and peak operatinglevels. The information can be used to make or recommend systemconfigurations to optimize performance and to compare information frommultiple security intermediaries 102 deployed across multiple webservers 104.

Communication between the security intermediary 102 and the clientdevices 112, 114 can occur over one or more networks, including theinternet 110. In some implementations, each client computing device 112and 114 may connect to a network such as a local area network (“LAN”) ora wide area network (“WAN”) that is in turn connected to the securityintermediary 102 through the internet 110. In some implementations, thesystem 100 may be installed on a private network rather than, or inaddition to, the internet 110. Communications over the internet 110 canbe encrypted and verified such as with HTTPS and Secure Sockets Layer(“SSL”) protocols.

Describing now one particular example of the operations of the system100 with reference to FIG. 1B, at step A, the web server 104 responds toa request from client devices 112 and 114 for an electronic resource.The web server 104 accesses or generates the resource, which in theexample is a webpage 116A relating to a financial transaction. Forinstance, the web server 104 may serve an online banking site,www.examplebank.com. The webpage 116A may provide forms for accountholders at the client devices 112 and 114 to institute an electronicwire transfer. The forms may include fields that allow the accountholders to indicate a source account, a destination account, and theamount to transfer. The webpage 116A may implement the form with HTMLtags such as <form> and <input> tags that are each identified by a name.For instance, the destination account field is named “money_dest.” Theclient devices 112 and 114 can use the names in submitting form data tothe web server 104 through a GET or POST HTTP request method, forexample.

Before the system 100 transmits the webpage 116A over the internet 110and to each of the client devices 112 and 114, the page 116A is directedto the security intermediary 102. The load balancer 106 may determinewhich security intermediary 102 to direct the webpage 116A to inimplementations where there may be multiple, redundant securityintermediaries 102. A policy engine at the security intermediary 102 maydetermine how the security intermediary 102 will process the webpage116A. For example, the policy engine may determine that the webpage116A, which pertains to sensitive financial transactions, is part of aresource family that the intermediary 102 has been configured to modifyand to insert instrumentation code. Other resources from the bankingsite, such as its homepage, may contain less sensitive information andmay be subject to lower-level security policies such that the securityintermediary 102 may handle the homepage with less sensitivity than thewire transfer webpage 116A.

At steps B1 and B2, the security intermediary 102 processes the webpage116A according to the governing security policy and transmits processedwebpage 116B to client devices 112 and 114. First, the securityintermediary 102 may modify elements of the webpage's 116A implicit API,such as field names, function names, and link references. In the exampleoperations of the system 100, the security intermediary 102 changes thename of the destination account field in webpage 116A from “money_dest”to “x1$v4.” The name change obscures the identity of the field toprevent malware 118 from learning how to exploit the field. Moreover,the security intermediary 102 can apply different pseudo-randommodifications each time the webpage 116A is served to prevent themalware 118 from tracking patterns that the malware 118 could use toexploit the web server 104 or initiate a fraudulent transaction, forexample. Other techniques for obscuring content, including obscuring theenvironment in which web code such as JavaScript operates, are discussedfurther herein.

Second, the security intermediary 102 can insert instrumentation codeinto the webpage that can detect certain activity that may indicatealien content (e.g., malware 118 or legitimate code on a client device112 or 114 that interacts with a web page such as a browser plug-in),and can report the detected activity back to the security intermediary102 and/or a central security server 108.

Instrumentation code may also collect information about particularactivity that occurs on the client device 112 and/or 114. For instance,the instrumentation code may collect information about how a userinteracts with the web page such as key strokes, mouse movements,changes in focus between particular forms, fields, or frames, andpatterns and timing of interactions with the page. Information about theuser's operating environment may also be collected, such as networkconfigurations, operating system information, hardware specifications,performance indicators, session identifiers, other cookies, browsertype, browser settings, IP address, MAC address, client device type,plug-ins, screen resolution, installed fonts, timestamp, site or pageidentifier, GPS data, etc. In some implementations, users and systemoperators can configure the instrumentation code to restrict oranonymize the data that it gathers to respect user privacy.

The security intermediary 102 can also include an identifier, such as asession identifier in a cookie, with the processed web page 116B. Thesecurity intermediary 102 can store the identifier in a data structure,table, or database that correlates the original web code with themodified web code for a particular resource so that the securityintermediary 102 can apply reverse modifications to requests based onmodified resources before forwarding the request to the web server 104.For example, the security intermediary 102 may assign a uniqueidentifier to the webpage 116A, and store the identifier in a table thatassociates the resource's original field name, “money_dest,” with themodified field name “x1$v4.” Later transactions posted to the web server104 from the modified page 116B can be received by the securityintermediary 102 for reverse modification before forwarding the requestto the web server 104. The security intermediary 102 can determine whichreverse modifications to apply based on the identifier. In someimplementations, the identifier can be a session identifier.

At step C1, client device 112 has received the modified (i.e.,processed) web code of web page 116B. Client device 112 is a cleandevice in that no malware 118 that is configured to attack the onlinebanking website has infected the device 112. A user at the client device112 provides into the fields on the web page 116B the necessaryinformation to complete a wire transfer, such as an indication of thesource account, destination account, and transfer amount. The user maythen submit the request for a wire transfer, which a browser on theclient device 112 converts into an HTTP request to the web server 104that includes the information submitted by the user with correspondingfield names. The HTTP request from client device 112 uses the randomfield name that the security intermediary 102 generated for thedestination account field, “x1$v4.”

Instrumentation code 112B can monitor the webpage 116B on client device112. In some implementations, the instrumentation code 112B maydetermine that malware 118 or other anomalous activity has altered thewebpage 116B and may be attempting to initiate an unauthorizedtransaction. For example, the instrumentation code 112B may includeinformation about the modified web code for web page 116B, and may beprogrammed to detect when elements of the modified code are altered atthe client device 112. For instance, the instrumentation code maydetermine whether the document object model (“DOM”) for the webpage hasbeen altered, or if the HTTP request based on the webpage usesunexpected values that do not correspond to the modified web codedelivered in web page 116B. For instance, the instrumentation code maydetect that the client device 114 has called an original function valuerather than its modified, replaced value.

Malicious activity can be both detected and deflected in relativelysophisticated manners by changing the environment in which executablecode on the client device, such as JavaScript, operates. Detection canoccur by identifying certain JavaScript operations or calls that may bemade on a page, and instrumenting code that is served with a web page soas to report to a security server system when such operations occurand/or such calls are made (along with information that describes theactions). Deflection occurs by the constant changing of code elements asthey are served each time, such as changing the names of elements thatwill be called by malicious JavaScript, so that the malicious code cannever catch up with the changes and thus gives itself away when it triesto interoperate with code known by the system to be stale. As oneexample, a common method for making changes to a DOM for a web page isthe document.write method, and may be used by malicious code tosurreptitiously change what the user of a computing device sees on a webpage. A security system can (1) instrument served code corresponding tosuch a method so that the instrumentation code reports calls to themethod, and additionally includes data that characterizes such calls, sothat the system can detect abnormal activity and perhaps use theadditional data to determine whether the abnormal activity is maliciousor benign; and (2) change the function name to“document.#3@1*87%5.write” or some other legal name that includes randomtext that can be changed automatically each time the code is served.Such constant changing creates a real challenge for a malicious partyseeking to write code that can keep up with the changes, and also flagsthe presence of the malicious code when it attempts to interact with anoutdated method name, and is reported by the instrumentation code. Otherexamples of JavaScript actions that can be instrumented and continuallychanged include “getElementById,” “getElementByName,” XPath commands,and setting of HTML elements in the DOM to particular values.

As instrumented code executes on the client device 112, 114, the codemay collect information that characterizes events and statuses of a webpage or other resource as described, and may report the information invarious manners. In some implementations, the instrumentation reportsthat includes such information can be sent to the security server 108and/or the security intermediary 102. The security server 108 mayreceive instrumentation reports directly from the client devices 112,114, or indirectly through the security intermediary 102. Theinstrumentation code may generate and transmit reports periodically orupon request, for instance. Reports can also be transmitted insubsequent HTTP requests from the client device 112, 114 to the webserver 104, and can be received by the security intermediary 102.Alternatively or in addition to these techniques, instrumentationreports can be sent to the security intermediary 102 or security server108 asynchronously, such as through the use of AJAX or WebSocket.

At step C1, malware 118 has not interfered with the transaction, and theHTTP request includes the appropriate modified field names such as“x1$v4” for the “money_dest” field. Therefore, the instrumentation code112B does not report the presence of anomalous or malicious activity tothe security intermediary 102.

At step C2, client device 114 is shown to have received the modified(i.e., processed) web code for web page 116B. Unlike client device 112,however, client device 114 is compromised with malware 118, such as aman-in-the-browser bot. When a user of the compromised client device 114submits the wire-transfer transaction, the malware 118 may intervene andreplace the destination account field name with “money_dest”—theoriginal field name before the security intermediary 102 modified webpage 116A. The bot may use the original field name, for example, basedon previous analysis of the banking website in instances where thesecurity intermediary 102 did not modify the field name. Theinstrumentation code 114B can detect the behavior or consequences of thebehavior of malware 118, and generate a report to alert the securityintermediary 102 and/or the web server 104 of suspicious activity. Theinstrumentation code 114B in FIG. 1B, for example, reports thesuspicious activity by causing the HTTP request that the user submitsfor the transaction to include the field name “x1$v4*” in place of themalware's 118 field name “money_dest.” The asterisk appended to the endof the modified field name indicates that the instrumentation code 114Bdetected suspicious activity.

At steps D1 and D2, the security intermediary 102 receives the HTTPrequests for the wire-transfer transaction from client devices 112 and114, decodes the requests, and forwards the decoded requests to the webserver 104. The HTTP requests from the client devices 112 and 114 mayinclude a cookie having a session identifier that the securityintermediary 102 can use in decoding the HTTP requests. The securityintermediary 102 can lookup the session identifier in a translationtable, and decode the request by applying reverse modifications thatrestore the original field and function names, for example. With respectto the request that the intermediary 102 receives from the clean clientdevice 112, the intermediary 102 receives the substitute field name“x1$v4” as expected, decodes the field name by replacing it with“money_dest” and forwards the request to the web server 104 through theload balancer 106. The operation of security intermediary 102 istransparent to the web server 104, and the web server 104 can processthe transaction according to the user's request.

With respect to the HTTP request from the compromised client device 114,the security intermediary 102 recognizes the instrumentation code's 114report of suspicious activity, and sends an alert to the web server 104.The security intermediary 102 can use the session identifier in the HTTPrequest to determine the appropriate reverse modifications necessary todecode the request. The security intermediary 102 may recognize that thefield name “x1$v4*” corresponds to the original “money_dest” field name,but that the instrumentation code 114B appended an asterisk to the fieldname to indicate possibly malicious activity. The security intermediary102 can respond to the indication in various ways according to theapplicable security policy and/or system configuration settings. In oneexample shown in step D2, the intermediary 102 forwards the decodedrequest to the web server 104, but appends the asterisk to thedestination account field name, “money_dest*,” to notify the web server104 that the transaction is suspicious, and may indicate the presence ofunauthorized alien content. In response, the web server 104 may ignorethe alert, complete the transaction and log the alert, refuse tocomplete the transaction, pretend to complete the transaction, and/ortake other appropriate action. In some implementations, the securityintermediary 102 may not forward the transaction request to the webserver 104 if suspicious activity has been detected.

At step E, the security intermediary 102 may forward information aboutthe transactions between the web server and the client devices 112and/or 114 to the security server 108. For example, the securityintermediary 102 may share information about the transaction from clientdevice 114 in which the instrumentation code 114B reported suspiciousactivity. The instrumentation code 114B may include a report about thedetected suspicious activity and its circumstances that the securityintermediary 102 can provide to the security server 108. For example,the report may include information about the client device 114, theabnormal or suspicious activity, the electronic resources and fieldsinvolved, and information about the browser, operating system, or otherapplication that the malware 118 may have compromised. Data from thesecurity server 108 can be analyzed with respect to the securityintermediary 102 for a particular site, or in aggregate with informationfrom other security intermediaries 102 that serve other websites and webservers 104. The security server 108 can analyze data across multiplecomputing sessions and for multiple client devices. The analysis fromthe security server 108 can be used, for instance, to identify newthreats, track known threats, and to distinguish legitimate abnormal oralien activity from malicious activity.

FIG. 2 is a schematic diagram of a system 200 for performing deflectionand detection of malicious activity with respect to a web server system.The system may be the same as the system 100 discussed with respect toFIGS. 1A and 1B, and is shown in this example to better explain theinterrelationship of various general features of the overall system 200,including the use of instrumentation code for detection and deflectionthat is discussed in greater detail throughout this document.

The system 200 in this example is a system that is operated by, or for,a large number of different businesses that serve web pages and othercontent over the internet, such as banks and retailers that have on-linepresences (e.g., on-line stores, or on-line account management tools).The main server systems operated by those organizations or their agentsare designated as web servers 204 a-204 n, and could include a broadarray of web servers, content servers, database servers, financialservers, load balancers, and other necessary components (either asphysical or virtual servers).

A set of security server systems 202 a to 202 n are shown connectedbetween the web servers 204 a to 204 n and a network 210 such as theinternet. Although both extend to n, the actual number of sub-systemscould vary. For example, certain of the customers could install twoseparate security server systems to serve all of their web serversystems (which could by one or more), such as for redundancy purposes.The particular security server systems 202 a-202 n may be matched toparticular ones of the web server systems 204 a-204 n, or they may be atseparate sites, and all of the web servers for various differentcustomers may be provided with services by a single common set ofsecurity servers 202 a-202 n (e.g., when all of the server systems areat a single co-location facility so that bandwidth issues areminimized).

Each of the security server systems 202 a-202 n may be arranged andprogrammed to carry out operations like those discussed above and belowand other operations. For example, a policy engine 220 in each suchsecurity server system may evaluate HTTP requests from client computers(e.g., desktop, laptop, tablet, and smartphone computers) based onheader and network information, and can set and store sessioninformation related to a relevant policy. The policy engine may beprogrammed to classify requests and correlate them to particular actionsto be taken to code returned by the web server systems before such codeis served back to a client computer. When such code returns, the policyinformation may be provided to a decode, analysis, and re-encode module,which matches the content to be delivered, across multiple content types(e.g., HTML, JavaScript, and CSS), to actions to be taken on the content(e.g., using XPATH within a DOM), such as substitutions, addition ofcontent, and other actions that may be provided as extensions to thesystem. For example, the different types of content may be analyzed todetermining naming that may extend across such different pieces ofcontent (e.g., the name of a function or parameter), and such names maybe changed in a way that differs each time the content is served, e.g.,by replacing a named item with randomly-generated characters. Elementswithin the different types of content may first be group as having acommon effect on the operation of the code, and then may be re-encodedtogether in a common manner so that their interoperation with each otherwill be consistent even after the re-encoding.

A rules engine 222 may story analytical rules for performing suchanalysis and for re-encoding of the content. The rules engine may bepopulated with rules developed through operator observation ofparticular content types, such as by operators of a system studyingtypical web pages that call JavaScript content and recognizing that aparticular method is frequently used in a particular manner. Suchobservation may result in the rules engine 222 being programmed toidentify the method and calls to the method so that they can all begrouped and re-encoded in a consistent and coordinated manner.

The decode, analysis, and re-encode module 224 encodes content beingpassed to client computers from a web server according to relevantpolicies and rules. The module 224 also reverse encodes requests fromthe client computers to the relevant web server. For example, a web pagemay be served with a particular parameter, and may refer to JavaScriptthat references that same parameter. The decode, analysis, and re-encodemodule 224 may replace the name of that parameter, in each of thedifferent types of content, with a randomly generated name, and eachtime the web page is served, the generated name may be different. Whenthe name of the parameter is passed back to the web server, it may bere-encoded back to its original name so that this portion of thesecurity process may occur seamless for the web server.

A key for the function that encodes and decodes such strings can bemaintained by the security server system 202 along with an identifierfor the particular client computer so that the system 202 may know whichkey or function to apply, and may otherwise maintaining a state for theclient computer and its session. A stateless approach may also beemployed, whereby the security server system 202 encrypts the state andstores it in a cookie that is saved at the relevant client computer. Theclient computer may then pass that cookie data back when it passes theinformation that needs to be decoded back to its original status. Withthe cookie data, the system 202 may use a private key to decrypt thestate information and use that state information in real-time to decodethe information from the client computer. Such a statelessimplementation may create benefits such as less management overhead forthe server system 202 (e.g., for tracking state, for storing state, andfor performing clean-up of stored state information as sessions time outor otherwise end) and as a result, higher overall throughput.

An instrumentation module 226 is programmed to add active code to thecontent that is served from a web server. The instrumentation is codethat is programmed to monitor the operation of other code that isserved. For example, the instrumentation may be programmed to identifywhen certain methods are called, when those methods have been identifiedas likely to be called by malicious software. When such actions areobserved by the instrumentation code to occur, the instrumentation codemay be programmed to send a communication to the security serverreporting on the type of action that occurred and other meta data thatis helpful in characterizing the activity. Such information can be usedto help determine whether the action was malicious or benign.

The instrumentation code may also analyze the DOM on a client computerin predetermined manners that are likely to identify the presence of andoperation of malicious software, and to report to the security servers202 or a related system. For example, the instrumentation code may beprogrammed to characterize a portion of the DOM when a user takes aparticular action, such as clicking on a particular on-page button, soas to identify a change in the OM before and after the click (where theclick is expected to cause a particular change to the DOM if there isbenign code operating with respect to the click, as opposed to maliciouscode operating with respect to the click). Data that characterizes theDOM may also be hashed, either at the client computer or the serversystem 202, to produce a representation of the DOM that is easy tocompare against corresponding representations of DOMs from other clientcomputers. Other techniques may also be used by the instrumentation codeto generate a compact representation of the DOM or other structureexpected to be affected by malicious code in an identifiable manner.

As noted, the content from web servers 204 a-204 n, as encoded bydecode, analysis, and re-encode module 224, may be rendered on webbrowsers of various client computers. Uninfected clients computers 212a-212 n represent computers that do not have malicious code programmedto interfere with a particular site a user visits or to otherwiseperform malicious activity. Infected clients computers 214 a-214 nrepresent computers that do have malicious code (218 a-218 n,respectively) programmed to interfere with a particular site a uservisits or to otherwise perform malicious activity. In certainimplementations, the client computers 212, 214 may also store theencrypted cookies discussed above and pass such cookies back through thenetwork 210. The client computers 212, 214 will, once they obtain theserved content, implement DOMs for managing the displayed web pages, andinstrumentation code may monitor the DOM as discussed above. Reports ofillogical activity (e.g., software on the client device calling a methodthat does not exist in the downloaded and rendered content)

The reports from the instrumentation code may be analyzed and processedin various manners in order to determine how to respond to particularabnormal events, and to track down malicious code via analysis ofmultiple different similar interactions. For small-scale analysis, eachweb site operator may be provided with a single security console 207that provides analytical tools for a single site or group of sites. Forexample, the console 207 may include software for showing groups ofabnormal activities, or reports that indicate the type of code served bythe web site that generates the most abnormal activity. For example, asecurity officer for a bank may determine that defensive actions areneeded if must of the reported abnormal activity for its web siterelates to content elements corresponding to money transferoperations—an indication that stale malicious code may be trying toaccess such elements surreptitiously.

A central security console may connect to a large number of web contentproviders, and may be run, for example, by an organization that providesthe software for operating the security server systems 202 a-202 n. Suchconsole 208 may access complex analytical and data analysis tools, suchas tools that identify clustering of abnormal activities acrossthousands of client computers and sessions, so that an operator of theconsole 208 can focus on those cluster in order to diagnose them asmalicious or benign, and then take steps to thwart any maliciousactivity.

In certain other implementations, the console 208 may have access tosoftware for analyzing telemetry data received from a very large numberof client computers that execute instrumentation code provided by thesystem 200. Such data may result from forms being re-written across alarge number of web pages and web sites to include content that collectssystem information such as browser version, installed plug-ins, screenresolution, window size and position, operating system, networkinformation, and the like. In addition, user interaction with servedcontent may be characterized by such code, such as the speed with whicha user interacts with a page, the path of a pointer over the page, andthe like. Such collected telemetry data, across many thousands ofsessions, may be used by the console 208 to identify what is “natural”interaction with a particular page and what is “unnatural” interactionthat is likely the result of a bot interacting with the content.Statistical and machine learning methods may be used to identifypatterns in such telemetry data, and to resolve bot candidates toparticular client computers. Such client computers may then be handledin special manners by the system 200, may be blocked from interaction,or may have their operators notified that their computer is running badsoftware.

FIG. 3 is a flow chart of a process for transforming code passed overthe internet. In general, in general, the process involves receivingcontent to be served to a client device and transforming that content soas to obscure the operation of the webpage that serves the content, sothat malicious code cannot attempt to take advantage of such operationof the webpage. The process also involves receiving requests from aclient to which the content was served, and using information passedwith the request to reverse transform the provided content, and thenprovide that transformed content to a Web server that serves theoriginal webpage.

The process begins a box at 302, where code to be served is received,such as from a web server that is connected to a security server system.At box 304, the security server system modifies the code to obscure itsoperation. For example, as discussed above, names of methods, functions,parameters, and other items may be changed into seemingly random stringsof text, where the changes are made consistently across HTML code, CSScode, and JavaScript code, so that calls between the different types ofcodes can be properly answered after the transformation (e.g., when thetypes of code are executed on the client device).

At box 306, the transformation information is generated. Generally, suchinformation would be generated before the modification so that it couldbe used in performing the modification, such as by providing thetransformation information to a function that transforms the content anduses the provided information as a parameter for the transformation. Thestep here involves taking the transformation information and packagingit for transmission to the client device. At box 308, the modified codeand the transformation information are served to the client device. Suchservice involves transmission in a single communication, or thetransformed content may be provided separately from the transformationinformation. The transformation information may be provided in a mannerthat it will exhibit its self as a cookie or similar item on the clientdevice.

At box 310, the system receives a subsequent request from the clientdevice. The request may take a variety of forms, and may be generated asa result of a user interaction with the web page that was served to theclient device. For example, perhaps a user of the client device choosesto enter text into a form on his or her bank web page so as to transferfunds between accounts. When the user clicks a button to execute thetransfer, a request may be sent back to the Web server for the bank andbe intercepted by a security subsystem. The request may have thetransformation information appended to it, and the security subsystemmay use such transformation information in the same manner it was usedwhen initially transforming the content to be served. However in thisinstance, the transformation is operated in the reverse direction, sothat transformed text may be reverted to its original form that wasserved by the Web server. Thus, at box 312, the received request isunpacked and decoded, and it least a portion of the request is passed tothe Web server in its reverse transformed format.

FIG. 4 shows a process for encryption. The process generally follows theformat of AES encryption using CCM block mode (e.g., RFC 3610 and NISTspecial publication 800-38C), to provide both assurance andconfidentiality and authenticity of a serialized data structure providedto the client device. This is the same block mode used for WPA2 in theIEEE 802.11i standard. The use of the nonce as illustrated in theearlier example case is required for the CCM block mode of operation.The nonce is not a secret, but should have a very high probability ofbeing unique and be unpredictable. A 112 bit random number providessufficient probability and leaves 16 bits for the counter in a 128 bitblock. The nonce should be passed in the clear, as it is required (inaddition to the key) to decrypt the ciphertext. To facilitate thisapproach with key management, all security servers for a given web siteshare a common, but randomly chosen, 256 bit key.

The potential for replay attacks from storing information at a clientdevice can be mitigated by (a) including a timestamp in the encryptedcookie, so that GETs/POSTs received after a reasonable amount of timeare simply ignored; and (2) keeping at each security server a circularbuffer of processed (received) nonces, so that the servers refusesubsequent GETs/POSTs reusing the same nonce. Nonces in the buffer olderthan the timeout value can be discarded.

FIG. 5 is a schematic diagram of a computer system 500. The system 500can be used for the operations described in association with any of thecomputer-implement methods described previously, according to oneimplementation. The system 500 is intended to include various forms ofdigital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The system 500 can also include mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. Additionally the system can includeportable storage media, such as, Universal Serial Bus (USB) flashdrives. For example, the USB flash drives may store operating systemsand other applications. The USB flash drives can include input/outputcomponents, such as a wireless transmitter or USB connector that may beinserted into a USB port of another computing device.

The system 500 includes a processor 510, a memory 520, a storage device530, and an input/output device 540. Each of the components 510, 520,530, and 540 are interconnected using a system bus 550. The processor510 is capable of processing instructions for execution within thesystem 500. The processor may be designed using any of a number ofarchitectures. For example, the processor 510 may be a CISC (ComplexInstruction Set Computers) processor, a RISC (Reduced Instruction SetComputer) processor, or a MISC (Minimal Instruction Set Computer)processor.

In one implementation, the processor 510 is a single-threaded processor.In another implementation, the processor 510 is a multi-threadedprocessor. The processor 510 is capable of processing instructionsstored in the memory 520 or on the storage device 530 to displaygraphical information for a user interface on the input/output device540.

The memory 520 stores information within the system 500. In oneimplementation, the memory 520 is a computer-readable medium. In oneimplementation, the memory 520 is a volatile memory unit. In anotherimplementation, the memory 520 is a non-volatile memory unit.

The storage device 530 is capable of providing mass storage for thesystem 500. In one implementation, the storage device 530 is acomputer-readable medium. In various different implementations, thestorage device 530 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device.

The input/output device 540 provides input/output operations for thesystem 500. In one implementation, the input/output device 540 includesa keyboard and/or pointing device. In another implementation, theinput/output device 640 includes a display unit for displaying graphicaluser interfaces.

The features described can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. The apparatus can be implemented in a computerprogram product tangibly embodied in an information carrier, e.g., in amachine-readable storage device for execution by a programmableprocessor; and method steps can be performed by a programmable processorexecuting a program of instructions to perform functions of thedescribed implementations by operating on input data and generatingoutput. The described features can be implemented advantageously in oneor more computer programs that are executable on a programmable systemincluding at least one programmable processor coupled to receive dataand instructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language, including compiled or interpretedlanguages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors ofany kind of computer. Generally, a processor will receive instructionsand data from a read-only memory or a random access memory or both. Theessential elements of a computer are a processor for executinginstructions and one or more memories for storing instructions and data.Generally, a computer will also include, or be operatively coupled tocommunicate with, one or more mass storage devices for storing datafiles; such devices include magnetic disks, such as internal hard disksand removable disks; magneto-optical disks; and optical disks. Storagedevices suitable for tangibly embodying computer program instructionsand data include all forms of non-volatile memory, including by way ofexample semiconductor memory devices, such as EPROM, EEPROM, and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.Additionally, such activities can be implemented via touchscreenflat-panel displays and other appropriate mechanisms.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include a local area network (“LAN”),a wide area network (“WAN”), peer-to-peer networks (having ad-hoc orstatic members), grid computing infrastructures, and the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork, such as the described one. The relationship of client andserver arises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous. In some implementations, thesubject matter may be embodied as methods, systems, devices, and/or asan article or computer program product. The article or computer programproduct may comprise one or more computer-readable media orcomputer-readable storage devices, which may be tangible andnon-transitory, that include instructions that may be executable by oneor more machines such as computer processors.

What is claimed is:
 1. A computer-implemented method for coordinatingcontent transformation, the method comprising: receiving, at a computerserver subsystem and from a web server system, computer code to beserved in response to a request from a computing client over theinternet; modifying the computer code to obscure operation of the webserver system that could be determined from the computer code;generating reverse transformation information that is needed in order toreverse the modifications of the computer code to obscure the operationof the web server system; and serving, to the computing client, themodified code and the reverse transformation information.
 2. Thecomputer-implemented method of claim 1, wherein at least some of thereverse transformation information is encrypted so that code on theclient computer cannot access the reverse transformation information. 3.The computer-implemented method of claim 1, wherein the reversetransformation information comprises a nonce and ciphertext.
 4. Thecomputer-implemented method of claim 1, further comprising receiving asubsequent request and the transformation information from the computingclient, and using the transformation information to apply a reversetransformation to a portion of the subsequent request.
 5. Thecomputer-implemented method of claim 4, further comprising applying aprivate key held by the computer server system to the transformationinformation.
 6. The computer-implemented method of claim 5, wherein thetransformation information comprises an initiation vector for a texttransformation process that has a forward function and an inversebackwards function.
 7. The computer-implemented method of claim 4,further comprising providing all or part of the request, with theportion of the request from the reverse transformation, to the webserver system.
 8. The computer-implemented method of claim 4, whereinthe subsequent request is received at a different server sub-system thana server sub-system that modified the computer code, and wherein theserver systems do not communicate reverse transformation between eachother.
 9. The computer-implemented method of claim 1, wherein modifyingthe computer code to obscure operation of the web server systemcomprises changing names of functions in the computer code.
 10. Thecomputer-implemented method of claim 1, wherein modifying the computercode to obscure operation of the web server system comprises changingvalues of attributes in the computer code.
 11. The computer-implementedmethod of claim 10, wherein modifying the computer code to obscureoperation of the web server system comprises changing values associatedwith at least one of a link, a form, a field, and a function in an HTMLdocument.
 12. The computer-implemented method of claim 1, whereinmodifying the computer code to obscure operation of the web serversystem comprises at least one of adding, removing, and rearrangingcontent in a web document.
 13. A computer system for coordinatingcontent transformation, the system comprising: a web server that isconfigured to provide a resource in the form of computer code to clientcomputing devices in response to requests from the client computingdevices; and a security intermediary that is configured to (i) receivethe resource from the web server before the resource is provided to thefirst client computing device, (ii) process the received resource, and(iii) transmit the processed resource and reverse transformationinformation to the first client computing device, wherein the reversetransformation information comprises information that is needed in orderto reverse the modifications of the computer code to obscure theoperation of the web server system.
 14. The computer system of claim 13,wherein processing the received resource includes (a) modifying thecomputer code for the received resource to obscure operation of the webserver system, and (b) supplementing the computer code for the receivedresource with instrumentation code that is programmed to execute on thefirst client computing device.
 15. The computer system of claim 13,wherein the security intermediary is further configured to receive, frominstrumentation code that executes on the client computing devices,reports that the instrumentation code detected abnormal behavior at theclient computing devices.
 16. The computer system of claim 13, whereinthe report includes an indication that the a client computing deviceattempted to interact with an unmodified form of the computer code.